Skip to content

16计算日期到天数转换 ​

本节目标:理解“16计算日期到天数转换”的核心思路,并能把它用于实际开发或面试表达。 简单 通过率:38.02% 时间限制:1秒 空间限制:32M 知识点==字符串====思维== 描述 根据输入的日期,计算是这一年的第几天。 保证年份为4位数且日期合法。 进阶:时间复杂度:�(�) O(n) ,空间复杂度:�(1) O(1) 输入描述: 输入一行,每行空格分割,分别是年,月,日 输出描述: 输出是这一年的第几天 示例1 输入: 2012 12 31 ==复制== 输出: 366 ==复制== 示例2 输入: 1982 3 4 ==复制== 输出: 63

为了计算给定日期是一年中的第几天,我们需要知道每个月的天数,以及如何处理闰年。在闰年中,二月有29天,而非闰年有28天。一个年份是闰年的条件是它能被4整除但不能被100整除,或者它能被400整除。

以下是如何实现这个逻辑的步骤:

  1. 确定每个月的天数:创建一个包含每个月天数的列表,考虑非闰年的情况。
  2. 判断是否为闰年:如果是闰年,将二月的天数调整为29天。
  3. 计算日期是一年中的第几天:根据输入的月份,累加之前所有月份的天数,再加上输入的日数。

这里是实现的代码: def is_leap_year(year): """判断是否为闰年""" return year % 4 == 0 and year % 100 != 0 or year % 400 == 0

def day_of_year(year, month, day):

每个月的天数,注意二月是按照非闰年来设置的 ​

days_of_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

如果是闰年,二月改为29天 ​

if is_leap_year(year): days_of_month[1] = 29

计算第几天 ​

return sum(days_of_month[:month-1]) + day

输入 ​

year, month, day = map(int, input().split())

输出 ​

print(day_of_year(year, month, day))

这段代码首先定义了一个is_leap_year函数来判断输入的年份是否为闰年。然后day_of_year函数使用days_of_month列表存储每个月的天数,通过累加到输入月份之前的所有月份的天数,并加上输入的日数来计算结果。如果输入的年份是闰年,会将二月的天数调整为29天。

这个方法的时间复杂度为O(1),因为无论输入如何,它所进行的计算步骤数量是固定的。空间复杂度也是O(1),因为所使用的额外空间不随输入数据的大小而改变。

本站总访问 — 次